package org.madmac.controller.setor;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.madmac.controller.validate.Validate;
import org.madmac.servlet.action.Action;
import org.madmac.setor.Setor;
import org.madmac.setor.SetorBo;
import org.madmac.setor.SetorDao;

/**
 *
 * @author atila camurca
 */
public class SetorServlet extends HttpServlet {

   private static final long serialVersionUID = 1L;

   /**
    * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
    * @param request servlet request
    * @param response servlet response
    * @throws ServletException if a servlet-specific error occurs
    * @throws IOException if an I/O error occurs
    */
   protected void processRequest(HttpServletRequest request, HttpServletResponse response)
           throws ServletException, IOException {
      response.setContentType("text/html;charset=UTF-8");
      PrintWriter out = response.getWriter();
      try {
         /* output your page here
         out.println("<html>");
         out.println("<head>");
         out.println("<title>Servlet SetorServlet</title>");
         out.println("</head>");
         out.println("<body>");
         out.println("<h1>Servlet SetorServlet at " + request.getContextPath () + "</h1>");
         out.println("</body>");
         out.println("</html>");
          */
      } finally {
         out.close();
      }
   }

   /**
    * Handles the HTTP <code>GET</code> method.
    * @param request servlet request
    * @param response servlet response
    * @throws ServletException if a servlet-specific error occurs
    * @throws IOException if an I/O error occurs
    */
   @Override
   protected void doGet(HttpServletRequest request, HttpServletResponse response)
           throws ServletException, IOException {
      try {
         List<Setor> list = SetorDao.getInstance().findAll();
         request.setAttribute("setores", list);
         request.setAttribute("action", Action.LIST_ALL);
         request.setAttribute("url", "/setor/setorListAll.jsp");
      } catch (Exception e) {
         System.out.println("Erro: " + e.getMessage());
         //e.printStackTrace();
         request.setAttribute("error", e);
			request.setAttribute("action", Action.ERROR);
      } finally {
         RequestDispatcher dispatcher = request.getRequestDispatcher("setor/setor.jsp");
         dispatcher.forward(request, response);
      }
   }

   /**
    * Handles the HTTP <code>POST</code> method.
    * @param request servlet request
    * @param response servlet response
    * @throws ServletException if a servlet-specific error occurs
    * @throws IOException if an I/O error occurs
    */
   @Override
   protected void doPost(HttpServletRequest request, HttpServletResponse response)
           throws ServletException, IOException {
      try {
         if (request.getParameter("id") == null) {
            Setor setor = new Setor();
				setor.setNome(request.getParameter("nome"));
				setor.setRamal(Validate.integerValue(request.getParameter("ramal")));

				// chamar BO setor.
				Integer id = SetorBo.getInstance().validateAndCreate(setor);
				Setor s = SetorDao.getInstance().findById(id);
				request.setAttribute("setor", s);
            request.setAttribute("action", Action.LIST);
         }
			RequestDispatcher dispatcher = request.getRequestDispatcher("setor/setor.jsp");
         dispatcher.forward(request, response);
      } catch (Exception e) {
			request.setAttribute("error", e);
			request.setAttribute("action", Action.ERROR);
      } finally {
         RequestDispatcher dispatcher = request.getRequestDispatcher("setor/setor.jsp");
         dispatcher.forward(request, response);
      }
   }

   /**
    * Returns a short description of the servlet.
    * @return a String containing servlet description
    */
   @Override
   public String getServletInfo() {
      return "Short description";
   }
}
